/**
 * @file ObservationManager.h
 *
 * Obsługa bazy danych obserwacji - nagłówek.
 *
 * @author Zbigniew Siciarz
 * @date 2009
 * @version 2.0.0
 * @since 2.0.0
 */

#ifndef OBSERVATIONMANAGER_H_
#define OBSERVATIONMANAGER_H_

#include "VisualObservation.h"
#include <QList>
#include <QModelIndex>

namespace Dogz
{
    /**
     * Zarządzanie bazą danych obserwacji.
     */
    class ObservationManager
    {
    public:
        static void createTables();
        static void clearTables();

        static int addObservation(const VisualObservation& observation);

        static QList<VisualObservation> getObservations(double jdFrom,
                double jdTo);

        static VisualObservation getByModelIndex(const QModelIndex& index);

        /**
         * Nazwy kolumn tabeli w bazie danych.
         */
        enum TableColumns
        {
            Id = 0, StarName = 1, Jd = 2, Magnitude = 3,
            FainterThan = 4, CompStarName = 5, ChartDate = 6, CommentCodes = 7,
            Notes = 8
        };

    private:
        ObservationManager();
        ObservationManager(const ObservationManager&);
        ObservationManager& operator=(const ObservationManager&);
        ~ObservationManager();
    };
}

#endif /* OBSERVATIONMANAGER_H_ */
